]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Calendar: freeze updates when the event source is loading
authorGiovanni Campagna <gcampagna@src.gnome.org>
Tue, 23 Oct 2012 16:41:24 +0000 (18:41 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Mon, 4 Mar 2013 17:59:30 +0000 (18:59 +0100)
Check if the event source is currently doing an async call, and prevent
UI updates in that case. This avoids a flash of "No updates" when switching
months.

https://bugzilla.gnome.org/show_bug.cgi?id=641383

js/ui/calendar.js

index 050ad8d159c5922703cf2789cd99df0ec5e04cc2..4606ed644406ffa8609acdfc9198b8c69e0f4fc2 100644 (file)
@@ -168,6 +168,7 @@ const EmptyEventSource = new Lang.Class({
     Name: 'EmptyEventSource',
 
     _init: function() {
+        this.isLoading = false;
     },
 
     requestRange: function(begin, end) {
@@ -229,6 +230,7 @@ const DBusEventSource = new Lang.Class({
 
     _init: function() {
         this._resetCache();
+        this.isLoading = false;
 
         this._initialized = false;
         this._dbusProxy = new CalendarServer();
@@ -293,6 +295,7 @@ const DBusEventSource = new Lang.Class({
         }
 
         this._events = newEvents;
+        this.isLoading = false;
         this.emit('changed');
     },
 
@@ -315,6 +318,7 @@ const DBusEventSource = new Lang.Class({
 
     requestRange: function(begin, end, forceReload) {
         if (forceReload || !(_datesEqual(begin, this._lastRequestBegin) && _datesEqual(end, this._lastRequestEnd))) {
+            this.isLoading = true;
             this._lastRequestBegin = begin;
             this._lastRequestEnd = end;
             this._curRequestBegin = begin;
@@ -776,6 +780,9 @@ const EventsList = new Lang.Class({
     },
 
     _update: function() {
+        if (this._eventSource.isLoading)
+            return;
+
         let today = new Date();
         if (_sameDay (this._date, today)) {
             this._showToday();